package cn.iocoder.devlop.module.annual.report.entuser.dal;

import cn.iocoder.devlop.framework.common.pojo.PageResult;
import cn.iocoder.devlop.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.devlop.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.devlop.module.annual.report.entuser.controller.vo.EntuserExportReqVO;
import cn.iocoder.devlop.module.annual.report.entuser.controller.vo.EntuserPageReqVO;
import cn.iocoder.devlop.module.annual.report.entuser.dal.dataobject.EntuserDO;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

/**
 * 用户信息 Mapper
 *
 * @author sunhao
 */
@Mapper
public interface EntuserMapper extends BaseMapperX<EntuserDO> {

    default PageResult<EntuserDO> selectPage(EntuserPageReqVO reqVO) {
        return selectPage(reqVO, new LambdaQueryWrapperX<EntuserDO>()
                .eqIfPresent(EntuserDO::getMarprid, reqVO.getMarprid())
                .eqIfPresent(EntuserDO::getRegno, reqVO.getRegno())
                .eqIfPresent(EntuserDO::getEnttype, reqVO.getEnttype())
                .eqIfPresent(EntuserDO::getLogincode, reqVO.getLogincode())
                .eqIfPresent(EntuserDO::getLoginpwd, reqVO.getLoginpwd())
                .eqIfPresent(EntuserDO::getLinkman, reqVO.getLinkman())
                .eqIfPresent(EntuserDO::getIdeneffeno, reqVO.getIdeneffeno())
                .eqIfPresent(EntuserDO::getPhone, reqVO.getPhone())
                .eqIfPresent(EntuserDO::getEmail, reqVO.getEmail())
                .eqIfPresent(EntuserDO::getFromtype, reqVO.getFromtype())
                .betweenIfPresent(EntuserDO::getCreatedate, reqVO.getCreatedate())
                .betweenIfPresent(EntuserDO::getUpdatetime, reqVO.getUpdatetime())
                .eqIfPresent(EntuserDO::getLerep, reqVO.getLerep())
                .eqIfPresent(EntuserDO::getLlydept, reqVO.getLlydept())
                .eqIfPresent(EntuserDO::getLlytel, reqVO.getLlytel())
                .eqIfPresent(EntuserDO::getCertype, reqVO.getCertype())
                .eqIfPresent(EntuserDO::getTel, reqVO.getTel())
                .eqIfPresent(EntuserDO::getUniscid, reqVO.getUniscid())
                .orderByDesc(EntuserDO::getId));
    }

    default List<EntuserDO> selectList(EntuserExportReqVO reqVO) {
        return selectList(new LambdaQueryWrapperX<EntuserDO>()
                .eqIfPresent(EntuserDO::getMarprid, reqVO.getMarprid())
                .eqIfPresent(EntuserDO::getRegno, reqVO.getRegno())
                .eqIfPresent(EntuserDO::getEnttype, reqVO.getEnttype())
                .eqIfPresent(EntuserDO::getLogincode, reqVO.getLogincode())
                .eqIfPresent(EntuserDO::getLoginpwd, reqVO.getLoginpwd())
                .eqIfPresent(EntuserDO::getLinkman, reqVO.getLinkman())
                .eqIfPresent(EntuserDO::getIdeneffeno, reqVO.getIdeneffeno())
                .eqIfPresent(EntuserDO::getPhone, reqVO.getPhone())
                .eqIfPresent(EntuserDO::getEmail, reqVO.getEmail())
                .eqIfPresent(EntuserDO::getFromtype, reqVO.getFromtype())
                .betweenIfPresent(EntuserDO::getCreatedate, reqVO.getCreatedate())
                .betweenIfPresent(EntuserDO::getUpdatetime, reqVO.getUpdatetime())
                .eqIfPresent(EntuserDO::getLerep, reqVO.getLerep())
                .eqIfPresent(EntuserDO::getLlydept, reqVO.getLlydept())
                .eqIfPresent(EntuserDO::getLlytel, reqVO.getLlytel())
                .eqIfPresent(EntuserDO::getCertype, reqVO.getCertype())
                .eqIfPresent(EntuserDO::getTel, reqVO.getTel())
                .eqIfPresent(EntuserDO::getUniscid, reqVO.getUniscid())
                .orderByDesc(EntuserDO::getId));
    }


    default EntuserDO selectEntuserByIdeneffeno(String ideneffeno,String regno){
        MPJLambdaWrapper<EntuserDO> mPJLambdaWrapper = new MPJLambdaWrapper<>();
        mPJLambdaWrapper.selectAll(EntuserDO.class)
                .disableLogicDel()
                .disableSubLogicDel()
                .eq(EntuserDO::getIdeneffeno,ideneffeno)
                .eq(EntuserDO::getRegno,regno);
        return selectJoinOne(EntuserDO.class, mPJLambdaWrapper);

    }

    default EntuserDO selectByPhoneAndRegno(String phone, String regno){
        MPJLambdaWrapper<EntuserDO> mPJLambdaWrapper = new MPJLambdaWrapper<>();
        mPJLambdaWrapper.selectAll(EntuserDO.class)
                .disableLogicDel()
                .disableSubLogicDel()
                .eq(EntuserDO::getPhone,phone)
                .eq(EntuserDO::getRegno,regno);
        return selectJoinOne(EntuserDO.class, mPJLambdaWrapper);
    }
}
